package com.nuoniu.sibanyun.service.crm;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nuoniu.sibanyun.entity.crm.CrmBusiness;
import com.nuoniu.sibanyun.entity.dto.SaleFunnelDto;
import com.nuoniu.sibanyun.entity.vo.CrmBusinessVo;
import com.nuoniu.sibanyun.entity.vo.EChartsFunnelVo;

import java.util.HashMap;
import java.util.List;

/**
 * <p>
 * 客户商机 服务类
 * </p>
 *
 * @author baiqiang
 * @since 2020-07-08
 */
public interface ICrmBusinessService extends IService<CrmBusiness> {

    /**
     * 分页获取列表
     * @author 小啊刚
     * @date 2020/7/8
     */
    Page<CrmBusiness> pageBusiness(Page page, CrmBusiness business);

    /**
     * 商机编号 是否重复
     * @param projectNo
     * @return
     */
    boolean isHaveNo(String projectNo);

    /**
     * 统计销售漏斗
     * @param saleFunnelDto
     * @return
     */
    List<EChartsFunnelVo> saleFunnelStatistic(SaleFunnelDto saleFunnelDto);

    /**
     * 获取商机编码
     * @param companyId
     * @return
     */
    String getBusinessNo(Integer companyId);

    /**
     * 修改商机编码
     * @author 小啊刚
     * @date 2020-08-11
     */
    void updateCode(String currentCode);

    /**
     * 通过ID查询详情
     * @param id
     * @return
     */
    CrmBusinessVo detailById(Integer id);

    /**
     * 获取 没有关联 活动非 商机
     * @return
     */
    List<CrmBusiness> listNoDistributeCrmBusiness();

    /**
     * 获取 市场活动 关联的商机
     * @param activityId
     * @return
     */
    List<CrmBusiness> listActivityBusiness(Integer activityId);

    /**
     * 清除 活动 与 商机 关系
     * @param activityIds
     */
    void clearActivityAndBusiness(List<Integer> activityIds);

    /**
     * 清除 活动 与 商机 关系
     * @param businessIds
     */
    void clearActivityAndBusinessByBusinessIds(List<Integer> businessIds,Long activityId);

    /**
     * 设置市场活动和商机关系
     * @param businessIds
     * @param activityId
     */
    void setActivityAndBusiness(List<Integer> businessIds,Long activityId);
}
